﻿using AntUnion.FrameWork.Model;
using AntUnion.FrameWork.Model.Models;
using AntUnion.FrameWork.Web.Service;
using System.Collections.Generic;
using static AntUnion.FrameWork.Web.Service.AssetsServer;

namespace AntUnion.FrameWork.Web.IService
{
    public interface IAssetsService
    {
        /// <summary>
        /// 获取收款信息
        /// </summary>
        /// <param name="id"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        DepositCollection GetCollection(int id, int type);

        /// <summary>
        /// 获取电汇账户
        /// </summary>
        List<WireTransfer> GetWireTransfer(int? roleId);

        /// <summary>
        /// 获取汇款账户
        /// </summary>
        List<RemittanceAccount> GetRemittanceAccount(int? roleId);

        /// <summary>
        /// 获取加密货币
        /// </summary>
        List<Cryptocurrency> GetCryptoCurrency(int? roleId);

        /// <summary>
        /// 获取出入金汇率
        /// </summary>
        /// <param name="from"></param>
        /// <param name="to"></param>
        /// <returns></returns>
        ExchangeRate GetExchangeRate(string from, string to);

        /// <summary>
        /// 费用计算
        /// </summary>
        /// <param name="from"></param>
        /// <param name="to"></param>
        /// <param name="amount"></param>
        /// <returns></returns>
        RealAmount Commission(string from, string to, decimal amount);

        /// <summary>
        /// 入金.
        /// </summary>
        /// <param name="crmDeposit"></param>
        /// <returns></returns>
        int Deposit( ref CrmDeposit crmDeposit);

        /// <summary>
        /// 出金
        /// </summary>
        /// <param name="crmDeposit"></param>
        /// <returns></returns>
        int Withdrawal(ref CrmWithdrawal crmWithdrawal);

        /// <summary>
        /// 获取我的电汇账户
        /// </summary>
        /// <param name="crmId"></param>
        /// <returns></returns>
        List<CrmWireTransfer> GetCrmWireTransfers(int crmId);

        /// <summary>
        /// 获取我的汇款账户
        /// </summary>
        /// <param name="crmId"></param>
        /// <returns></returns>
        List<CrmRemittanceAccount> GetCrmRemittanceAccounts(int crmId);

        /// <summary>
        /// 获取我的电汇账户
        /// </summary>
        /// <param name="crmId"></param>
        /// <returns></returns>
        List<CrmCryptocurrency> GetCrmCryptocurrencys(int crmId);

        /// <summary>
        /// 入金审核
        /// </summary>
        /// <param name="page"></param>
        /// <param name="limit"></param>
        /// <param name="login"></param>
        /// <param name="mothod"></param>
        /// <param name="state"></param>
        /// <param name="createTime"></param>
        /// <param name="orderId"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        List<DepositModel> GetDeposit(int page, int limit, int crmId, int? login, int? mothod, int? state, string createTime, string orderId, out int count);

        /// <summary>
        /// 出金审核
        /// </summary>
        /// <param name="page"></param>
        /// <param name="limit"></param>
        /// <param name="login"></param>
        /// <param name="mothod"></param>
        /// <param name="state"></param>
        /// <param name="createTime"></param>
        /// <param name="orderId"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        List<WithdrawalModel> GetWithdrawal(int page, int limit, int crmId, int? login, int? mothod, int? state, string createTime, string orderId, out int count);
    }
}
